import logging
import os
import psutil
import subprocess


def report_status(pid_file_path, auto_confirm=False, logger_config=None):
    """
    检查对应 pid 文件中保存的 pid 是否在进程列表中存在。
    如果存在，则调用系统函数汇报当前程序的详细信息。
    否则打印当前进程不存在，并询问是否以 --daemon 的形式重启应用。
    如果 auto_confirm 为 True，则自动以 --daemon 的形式重启应用。
    """
    if not os.path.exists(pid_file_path):
        print(f"❌ PID 文件 `{pid_file_path}` 不存在。")
        return
    with open(pid_file_path, 'r') as f:
        try:
            pid = int(f.read().strip())
        except ValueError:
            print("❌ PID 文件内容无效。")
            return
        if psutil.pid_exists(pid):
            print(f"✅ 进程 {pid} 正在运行，正在获取详细信息...")
            process = psutil.Process(pid)
            print(f"进程名: {process.name()}")
            print(f"进程状态: {process.status()}")
            print(f"启动时间: {process.create_time()}")
            print(f"CPU 使用率: {process.cpu_percent(interval=1.0)}%")
            print(f"内存使用: {process.memory_info().rss / 1024 / 1024:.2f} MB")
        else:
            print(f"❌ 进程 {pid} 已退出。")
            if logger_config:
                file_conf = logger_config.get('file') if logger_config else None
                if file_conf:
                    error_log = file_conf.get('error')
                    with open(error_log, 'r') as error_log_f:
                        error_content = error_log_f.read()
                        print(f"错误日志内容:\n{error_content}")
            if auto_confirm:
                print("⚙️ 自动确认已启用，正在以 --daemon 模式重启应用...")
                subprocess.run(["sa.sh", "-d"])
            else:
                user_input = input("是否以 --daemon 模式重启应用？(yes/Y/y 确认): ").strip().lower()
                if user_input in ['yes', 'y']:
                    print("⚙️ 正在以 --daemon 模式重启应用...")
                    subprocess.run(["sa.sh", "-d"])
                else:
                    print("操作已取消。")
